package com.wh1200.mybatis.xmlless.model.base

import com.wh1200.mybatis.xmlless.AnnotatedElementDetailInfo
import com.wh1200.mybatis.xmlless.model.XmllessTableInfo


/**
 *
 * @author 吴昊
 * @date 2024/1/19 9:38
 * @since v4.0.0
 * @version 1.0
 */
interface BaseClassWrapper {

  /**
   * @return
   */
  fun getJavaClass(): Class<*>

  /**
   * @return
   */
  fun getClassName(): String

  /**
   * @return
   */
  fun initXmllessTableInfo(): XmllessTableInfo

  /**
   * @return
   */
  fun isComplex(): Boolean


  /**
   * @return
   */
  fun getAllSuperClassesOrInterfaces(): List<String>

  /**
   * @return
   */
  fun isArray(): Boolean

  /**
   * @return
   */
  fun isCollection(): Boolean

  /**
   * @return
   */
  fun getAllFields(): List<AnnotatedElementDetailInfo>

  /**
   * @return
   */
  fun getRealType(): BaseClassWrapper

  /**
   * @return
   */
  fun isString(): Boolean

  /**
   * @return
   */
  fun isPrimitive(): Boolean


}
